/*
    函数作用：格式化年月日
    参数：
        obj：时间对象
        str：年月日之间分隔的符号
    返回值：格式化好的日期字符串
*/
export const nyr = (obj, str) => {
    let year = obj.getFullYear()
    let month = obj.getMonth() + 1
    let day = obj.getDate()
    let timeStr = ''
    if (str) {
        timeStr = `${year}${str}${month > 9 ? month : '0' + month}${str}${day > 9 ? day : '0' + day}`
    } else {
        timeStr = `${year}年${month}月${day}日`
    }
    return timeStr
}

/*
作用：根据秒数得到时间（天 时 分 秒）
参数：time
      time是秒数
  使用案例：
  Time(1388)
*/
export function Time(time) {
    if (time / 60 > 60) {
        let res = time / 60 / 60
        //分钟
        let t = time - parseInt(res) * 60 * 60;
        //秒数
        let t1 = t - parseInt(t / 60) * 60;

        if (time / 60 / 60 > 24) {
            let h = parseInt((time - parseInt(res / 24) * 86400) / 60 / 60);
            let m = parseInt(((time - parseInt(res / 24) * 86400) - 3600 * h) / 60)
            let s = (time - parseInt(res / 24) * 86400) - 3600 * h - m * 60
            return parseInt(res / 24) + '天' + h + '小时' + m + '分钟' + s + '秒'
        }
        else {
            return parseInt(res) + '小时' + parseInt(t / 60) + '分钟' + t1 + '秒'
        }
    }
    if (time > 60 && time < 3600) {
        let m = parseInt(time / 60)
        let s = time - m * 60
        return m + '分钟' + s + '秒'
    } else {
        return time + '秒'
    }

}


// function randomNum(n, m) {
//     var randomsum = Math.random() * (m - n + 1) + n;//这里是定义随机数的方法后面的算法是将n，m的取值范围算出来
//     return parseInt(randomsum);//将上一行15的行代码的返回值（randomsum） 取整再返回给randomsum
// }

export function sfm(obj) {
    let year = obj.getFullYear()
    let month = obj.getMonth() + 1
    let day = obj.getDate()
    let hours = obj.getHours()
    let minutes = obj.getMinutes()
    let seconds = obj.getSeconds()
    let timeStr = `${year}-${month}-${day} ${hours > 9 ? hours : '0' + hours}:${minutes > 9 ? minutes : '0' + minutes}:${seconds > 9 ? seconds : '0' + seconds}`
    return timeStr
}

// 判断当前页面是否已经滚动到底部的函数
export function isScrolledToBottom(element) {
    // 对于整个页面，你可以使用 document.documentElement 或 document.body  
    const scrollTop = element.scrollTop;    // 卷去的高度
    const clientHeight = element.clientHeight;     // 可见高度
    const scrollHeight = element.scrollHeight;      // 总高度

    return scrollTop + clientHeight >= scrollHeight - 30;
}

// 节流函数
export function throttle(fn, delay) {
    // 记录上一次函数执行的时间戳
    let last = 0;
    return function () {
        // 当前函数执行的时间戳
        let now = new Date().getTime();
        if (now - last > delay) {
            fn();
            last = now;
        }
    }
}

/*
    函数作用：生成一个指定范围的随机数
    参数：
        n1：范围边界
        n2：范围边界
    返回值：一个 n1-n2范围（不包含n2）的随机数
*/
export function randomNum(n1, n2) {
    let max = n1 > n2 ? n1 : n2
    let min = n1 > n2 ? n2 : n1
    return parseInt(Math.random() * (max - min) + min)
}


/*
    函数作用：计算任意一个时间对象是当前时间多久之前
    参数：
        date：时间戳
    返回值：时间的字符串
*/
export function timeAgo(date) {
    let oldDate = new Date(Number(date))
    let y = oldDate.getFullYear()
    let m = oldDate.getMonth() + 1
    let d = oldDate.getDate()

    let nowDate = new Date()
    let t = nowDate.getTime() - oldDate.getTime()
    let day = parseInt(t / 1000 / 86400)
    let hours = parseInt(t / 1000 % 86400 / 3600)
    let minutes = parseInt(t / 1000 % 86400 % 3600 / 60)
    let seconds = parseInt(t / 1000 % 86400 % 3600 % 60)
    if (day > 7) {
        return `${y}年${m}月${d}日`
    } else if (day < 7 && day > 0) {
        return `${day}天前`
    } else if (day == 0 && hours > 0) {
        return `${hours}小时前`
    } else if (day == 0 && hours == 0 && minutes > 0) {
        return `${minutes}分钟前`
    } else if (day == 0 && hours == 0 && minutes > 0) {
        return `${seconds}秒前`
    } else {
        return '刚刚发布'
    }
}